package com.firefly.admin.tripartite.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.firefly.admin.common.vo.Result;
import com.firefly.admin.tripartite.entity.FyTripartiteWechatMerchant;
import com.firefly.admin.tripartite.vo.WechatMerchantQueryVo;
import com.firefly.admin.tripartite.vo.WechatMerchantStatusUpdateVo;

import java.util.List;

public interface FyTripartiteWechatMerchantService {
    /**
     * 通过appId获取商户配置
     *
     * @param appId 小程序appId
     * @return 微信商户配置
     */
    FyTripartiteWechatMerchant findByAppId(String appId);

    /**
     * 通过微信商户序列号查询微信商户信息
     *
     * @param merchantSerialNumber 微信商户序列号
     * @return 微信商户信息
     */
    FyTripartiteWechatMerchant findByMerchantSerialNumber(String merchantSerialNumber);

    /**
     * 分页查询第三方微信商户接口
     *
     * @param wechatMerchantQueryVo 分页查询参数
     * @return 分页列表
     */
    Result<Page<FyTripartiteWechatMerchant>> getWechatMerchantList(WechatMerchantQueryVo wechatMerchantQueryVo);

    /**
     * 第三方微信商户信息新增接口
     *
     * @param fyTripartiteWechatMerchant 微信商户信息
     * @return 操作结果
     */
    Result<FyTripartiteWechatMerchant> add(FyTripartiteWechatMerchant fyTripartiteWechatMerchant);

    /**
     * 第三方微信商户信息编辑接口
     *
     * @param fyTripartiteWechatMerchant 微信商户信息
     * @return 操作结果
     */
    Result<FyTripartiteWechatMerchant> update(FyTripartiteWechatMerchant fyTripartiteWechatMerchant);

    /**
     * 第三方微信商户状态编辑接口
     *
     * @param wechatMerchantStatusUpdateVo 状态信息
     * @return 操作结果
     */
    Result<FyTripartiteWechatMerchant> updateStatus(WechatMerchantStatusUpdateVo wechatMerchantStatusUpdateVo);

    /**
     * 第三方微信商户信息删除接口
     *
     * @param merchantConfigId 微信商户ID
     * @return 操作结果
     */
    Result<String> delete(Long merchantConfigId);

    /**
     * 第三方微信商户号校验接口
     *
     * @param merchantId       微信商户号
     * @param merchantConfigId 微信商户配置ID
     * @return 校验结果
     */
    Result<String> merchantIdCheck(String merchantId, Long merchantConfigId);

    /**
     * 根据商户配置ID查询商户信息
     *
     * @param merchantConfigId 商户配置ID
     * @return 商户信息
     */
    FyTripartiteWechatMerchant findById(Long merchantConfigId);

    /**
     * 查询可用的第三方微信商户接口
     *
     * @return 微信商户列表
     */
    Result<List<FyTripartiteWechatMerchant>> getUsableWechatMerchantList();
}
